package com.example.onlinetaxi.util.ChartInitUtil;

import android.graphics.Color;

import androidx.annotation.ColorRes;

import java.util.ArrayList;
import java.util.Formatter;
import java.util.List;

import lecho.lib.hellocharts.formatter.AxisValueFormatter;
import lecho.lib.hellocharts.gesture.ContainerScrollType;
import lecho.lib.hellocharts.gesture.ZoomType;
import lecho.lib.hellocharts.model.Axis;
import lecho.lib.hellocharts.model.AxisValue;
import lecho.lib.hellocharts.model.Line;
import lecho.lib.hellocharts.model.LineChartData;
import lecho.lib.hellocharts.model.PointValue;
import lecho.lib.hellocharts.model.ValueShape;
import lecho.lib.hellocharts.view.LineChartView;

public class ChartInitUtil {

    // 转换为LineChartView可以录入的集合对象
    private List<AxisValue> mAxisXValues = new ArrayList<AxisValue>();
    private List<PointValue> mPointValues = new ArrayList<PointValue>();

    // 单条线的对象
    private Line mLine;
    // 线的集合
    private List<Line> mLines = new ArrayList<Line>();
    // 折线图数据对象
    private LineChartData mData = new LineChartData();

    // 坐标轴对象
    private Axis mAxisX = new Axis();
    private Axis mAxisY = new Axis();  //Y轴

    public void initChart(LineChartView lineChartView, String total, String AxisYName, List<String> data, List<Double> score, int color) {

        // 把数组中的数据录入集合中
        for (int i = 0; i < data.size(); i++) {
            mAxisXValues.add(new AxisValue(i).setLabel(data.get(i))); //设置x轴坐标显示
            mPointValues.add(new PointValue(i, score.get(i).floatValue()));
        }

        // 折线的颜色（橙色）
        mLine = new Line(mPointValues).setColor(color);
        // 折线图上每个数据点的形状  这里是圆形 （有三种 ：ValueShape.SQUARE  ValueShape.CIRCLE  ValueShape.DIAMOND）
        mLine.setShape(ValueShape.CIRCLE);
        //曲线是否平滑，即是曲线还是折线
        mLine.setCubic(true);
        // 是否填充曲线的面积
        mLine.setFilled(true);
        // 曲线的数据坐标是否加上备注
        mLine.setHasLabels(true);
        // 是否用线显示。如果为false 则没有曲线只有点显示
        mLine.setHasLines(true);
        // 是否显示圆点 如果为false 则没有原点只有点显示（每个数据点都是个大的圆点）
        mLine.setHasPoints(true);
        mLines.add(mLine);

        // 坐标轴
        // X轴
        mAxisX.setHasTiltedLabels(true);  //X坐标轴字体是斜的显示还是直的，true是斜的显示
        mAxisX.setTextColor(Color.GRAY);  //设置字体颜色
        mAxisX.setName(total);  //表格名称
        mAxisX.setTextSize(14);//设置字体大小
        mAxisX.setValues(mAxisXValues);  //填充X轴的坐标名称
        mAxisX.setHasLines(true); //x 轴分割线

        // Y轴是根据数据的大小自动设置Y轴上限
        mAxisY.setName(AxisYName);// y轴标注
        mAxisY.setTextSize(12);// 设置字体大小

        //把所有的线设置到数据对象中
        mData.setLines(mLines);
        //设置坐标轴x到数据对象中
        mData.setAxisXBottom(mAxisX);
        mData.setAxisYLeft(mAxisY);  //Y轴设置在左边

        //把数据设置到折线控件上
        lineChartView.setLineChartData(mData);
        //设置图表是否支持缩放滑动和平移
        lineChartView.setInteractive(true);
        lineChartView.setContainerScrollEnabled(true, ContainerScrollType.HORIZONTAL);
        //设置缩放的轴
        lineChartView.setZoomType(ZoomType.HORIZONTAL);
        //设置最高放大倍数
        lineChartView.setMaxZoom(2);
    }

}
